function TrimStr(s) {
    s = s.replace( /^\s+/g, '');
    return s.replace( /\s+$/g, '');
}        

$(document).ready(function(){
    online_rpc = new rpc.ServiceProxy("/api/index.php", {
        asynchronous: true,   //default: true
        sanitize: true,       //default: true
        protocol: 'JSON-RPC', //default: JSON-RPC
        methods: ['printAll', 'addTask', 'deleteTask', 'editTask']
    }); 

    $("#update_btn").click(function (e){
        online_rpc.printAll({
            onSuccess:function(ret, params){
                if(ret['error'])
                {
                    $("#message").text("Ошибка! "+ret['error']);
                    return;
                }
                data = '';
                $.each(ret, function(id, arr) {
                    data += '<tr><td>'+arr['date']+'</td><td><a href="javascript:;" onClick="editTask('+id+')" id="t_'+id+'">'+arr['name']+'</a></td><td><a href="javascript:;" onClick="deleteTask('+id+')">удалить</a></td></tr>';
                });
                if(data.length == 0)
                    data = '<tr><td colspan=3 align=center>Пока нет задач</td></tr>';
                $("#result_text").html('<table class="res-table"><thead><tr><td width=150>Дата</td><td>Задача</td><td width=150>Действие</td></tr></thead><tbody>'+data+'</tbody></table>');
            },
            onException:function(e){
                $("#message").text("Ошибка!"+e.toString());
            }
        });	
    });

    $("#add_btn").click(function (e){
        task = TrimStr($('#name_task').val());
        if(task.length==0)
        {
            alert('введите текст задачи.');
            $('#name_task').focus();
            return;
        }
        online_rpc.addTask({
            params: {"name" : task },
            onSuccess:function(ret, params){
                $("#update_btn").click();
                $('#name_task').val('');
                $('#message').html('Задача добавлена.');
            },
            onException:function(e){
                $("#message").html("Ошибка!"+e.toString());
            }
        });	
    });

    $("#edit_btn").click(function (e){
        task = TrimStr($('#name_task').val());
        if(task.length==0)
        {
            alert('введите текст задачи.');
            $('#name_task').focus();
            return;
        }
        if($('#id_task').val()<=0)
        {
            alert('Не задан код задачи!');
            return;
        }

        online_rpc.editTask({
            params: {"name" : task, "id" : $('#id_task').val()},
            onSuccess:function(ret, params){
                $("#update_btn").click();
                $('#name_task').val('');
                $('#id_task').val('');
                $('#edit_btn').hide();
                $('#add_btn').show();
                $('#message').html('Задача изменена.');
            },
            onException:function(e){
                $("#message").html("Ошибка!"+e.toString());
            }
        });	
    });

    $("#update_btn").click();
});

function deleteTask(id){
    if(confirm('Удалить выбранную задачу?') && id){
        online_rpc.deleteTask({
            params: {"id" : id },
            onSuccess:function(ret, params){
                $("#update_btn").click();
                $('#message').html('Задача удалена.');
            },
            onException:function(e){
                $("#message").text("Ошибка!"+e.toString());
            }
        });	
    }
}

function editTask(id){
    if(id){
        $('#name_task').val($('#t_'+id).text());
        $('#id_task').val(id);
        $('#add_btn').hide();
        $('#edit_btn').show();
    }
}

